#include <bits/stdc++.h>
using namespace std;
vector<bool> tobinary(int n){
	vector<bool> binary;
	for(int i=0;n!=0;i++){
		if(n%2==0){
			binary.push_back(false);
			n/=2;
		}else{
			binary.push_back(true);
			n--;
			n/=2;
		}
	}
	return binary;
}
void show(vector<bool> a){
	for(vector<bool>::reverse_iterator i=a.rbegin();i!=a.rend();++i){
		cout<<*i?1:0;
	}
	cout<<endl;
	return;
}
string build(int n){
	string buff;
	bool sign=false;

	vector<bool> binary=tobinary(n);
//	show(binary);
	for(int i=binary.size()-1;i>=0;i--){
		if(!binary[i])continue;
		if(sign)buff+="+";
		if(i==0){
			buff+="2(0)";
			sign=true;
			continue;
		}
		if(i==1){
			buff+="2";
			sign=true;
			continue;
		}
		buff+="2(";
		buff+=build(i);
		buff+=")";
		sign=true;
	}
	return buff;
}
string build1(int n){
	string buff;
	bool sign=false;
	if(n==2){
		buff+="2";
		return buff;
	}
	if(n==1){
		buff+="2(0)";
		return buff;
	}
	vector<bool> binary=tobinary(n);
	show(binary);
//	buff+="2(";
	for(int i=binary.size()-1;i>=0&&binary[i];i--){
		if(sign)buff+="+";
		buff+=build(i+1);
		sign=true;
	}
//	buff+=")";
	return buff;
}

int main(void){
	vector<bool> binary;
	int n=0;
//	tag:
	cin>>n;
	cout<<build(n)<<endl;
//	goto tag;
	return 0;
}
